<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>vue3-escook</title>
  <link rel="stylesheet" href="./lib/style.css">
  <script type="importmap">
    {
      "imports" : {
        "vue": "./lib/vue-3.4.29.js"
      }
    }
  </script>
  <script type="module">
    import { createApp, ref } from 'vue'

    const app = createApp({
      setup() {
        const name = ref('')
        const nextId = ref(4)

        const list = ref([
          { id: 1, name: '张三' },
          { id: 2, name: '李四' },
          { id: 3, name: '小白' },
        ])

        const add = () => {
          if (name.value === '') return
          list.value.unshift({ id: nextId.value, name: name.value })
          nextId.value++
          name.value = ''
        }

        return {
          list,
          name,
          nextId,
          add
        }
      }
    })

    app.mount('#app')
  </script>
</head>

<body>
  <div id="app">
    <input type="text" v-model.trim="name">
    <button @click="add">添加</button>
    <hr>

    <ul>
      <!-- 如果进行 v-for 循环的时候，没有为元素绑定 key 值， -->
      <!-- 则 Vue 在更新列表的时候，采用的是“就地更新的策略” -->
      <!-- 官方建议，只要用到了 v-for 指令，就要同时为元素添加 :key 值的动态绑定，
        而且如果数据项中包含 id 属性，就推荐把 的值绑定为 key 的值。 -->
      <template v-for="(item, i) in list" :key="item.id">
        <li :id="'list-item-' + item.id">
          <input type="checkbox">
          <span>索引是：{{ i }}；</span>
          <span>姓名是：{{ item.name }}；</span>
          <span>id 是：{{ item.id }}</span>
        </li>
        <li style="list-style: none;" v-if="i !== list.length - 1">-----------------</li>
      </template>
    </ul>
  </div>
</body>

</html>